/*
 * SincronyzedQueue.h
 *
 *  Created on: 21/07/2011
 *      Author: jairo
 */

#ifndef __BILBAO_PROTOCOL_SERIAL_SINCRONYZED_QUEUE_CLASS_H__
#define __BILBAO_PROTOCOL_SERIAL_SINCRONYZED_QUEUE_CLASS_H__

#include "bilbao/types.h"
#include "bilbao/lang/Mutex.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			class SincronyzedQueue
			{
			public:
				/*
				 * Construtor padrão
				 */
				SincronyzedQueue( void );

				/*
				 * Destrutor
				 */
				virtual ~SincronyzedQueue( void );

				/*
				 *
				 */
				void push( const String& );

				/*
				 *
				 */
				void pop( String& );

				/*
				 *
				 */
				bool empty( void );

			private:
				/*
				 *
				 */
				std::queue< String > _sincronyzedQueue;

				/*
				 *
				 */
				lang::Mutex _mtx;

			}; // class SincronyzedQueue
		} // namespace serial
	} // namespace protocol
} // namespace bilbao


#endif // __BILBAO_PROTOCOL_SERIAL_SINCRONYZED_QUEUE_CLASS_H__
